package com.example.controller;


import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.common.Ra;
import com.example.entity.PsFunction;
import com.example.entity.PsLogs;
import com.example.entity.PsSystemconfig;
import com.example.mapper.PsSystemconfigMapper;
import com.example.service.impl.PsSystemconfigServiceImpl;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author 伍彦端
 * @since 2024-04-22
 */
@CrossOrigin(origins="*")
@ResponseBody
@RestController
@RequestMapping("/systemconfig")
public class PsSystemconfigController {
    @Resource
    PsSystemconfigServiceImpl psSystemconfigService;
    @Resource
    PsSystemconfigMapper psSystemconfigMapper;

    /**
     * 缺陷管理 展示信息
     * @return
     */
    @RequestMapping("/show")
    public Object show(Integer nowPage){
        if (nowPage==null){
            nowPage=1;
        }
        IPage<PsSystemconfig> page=new Page<>(nowPage,2);
        QueryWrapper queryWrapper=new QueryWrapper();
//        queryWrapper.setEntity(psSystemconfig);
        queryWrapper.eq("configCode","BUG_TYPE");
        IPage iPage = this.psSystemconfigMapper.selectPage(page, queryWrapper);
//        List list = iPage.getRecords();
        return iPage;
    }

    /**
     * 缺陷管理 获取缺陷级别下拉框数据
     * @return
     */
    @RequestMapping("/getSel")
    public Object getSel(){
        QueryWrapper queryWrapper=new QueryWrapper();
        queryWrapper.eq("configCode","BUG_LEVEL");
        return psSystemconfigService.list(queryWrapper);
    }

    /**
     *syj
     * @param
     * @param
     * @return
     */
    @ResponseBody
    @RequestMapping("/config")
    public Ra selectPage() {
        List<PsSystemconfig> psconfig = psSystemconfigService.list();

        Set<String> uniqueNames = new HashSet<>();
        List<PsSystemconfig> uniqueConfigs = new ArrayList<>();

        for (PsSystemconfig config : psconfig) {
            String name = config.getConfigcode();
            if (!uniqueNames.contains(name)) {
                uniqueNames.add(name);
                uniqueConfigs.add(config);
            }
        }
        return new Ra().AddDatamap("functions", uniqueConfigs);
    }

    /**
     *syj
     * @param
     * @param
     * @return
     */
    @ResponseBody
    @RequestMapping("/selectConfigcode")
    public Ra selectConfigcode(String configcode) {
        QueryWrapper<PsSystemconfig> queryWrapper=new QueryWrapper<>();
        queryWrapper.eq("configCode",configcode);

        List<PsSystemconfig> psconfig = psSystemconfigService.list(queryWrapper);
        return new Ra().AddDatamap("functions", psconfig);
    }

    /**
     * 缺陷管理 添加缺陷类型
     * @param configValueName
     * @param isStart
     * @return
     */
    @RequestMapping("/add")
    public Object add(String configValueName,Integer isStart){
        PsSystemconfig psSystemconfig = new PsSystemconfig();
        psSystemconfig.setConfigcode("BUG_TYPE");
        psSystemconfig.setConfigvalueid(
                psSystemconfigService.getMaxConfigId("BUG_TYPE")+1
        );
        psSystemconfig.setConfigname("缺陷类型");
        psSystemconfig.setConfigvaluename(configValueName);
        psSystemconfig.setIsstart(isStart);
        return psSystemconfigService.save(psSystemconfig);
    }

    /**
     * 缺陷管理 修改缺陷类型
     * @param id
     * @param configCode
     * @param isStart
     * @return
     */
    @RequestMapping("/update")
    public Object update(Integer id,String configCode,Integer isStart){
        UpdateWrapper updateWrapper=new UpdateWrapper();
        updateWrapper.eq("id",id);
        updateWrapper.set("configCode",configCode);
        updateWrapper.set("isStart",isStart);
        return psSystemconfigService.update(updateWrapper);
    }

    /**
     * 缺陷管理 删除缺陷类型
     * @param id
     * @return
     */
    @RequestMapping("/del")
    public Object del(Integer id){
        UpdateWrapper updateWrapper=new UpdateWrapper();
        updateWrapper.eq("id",id);
        return psSystemconfigService.remove(updateWrapper);
    }





}
